#include "httplib.h"


void Hello(const httplib::Request &req, httplib::Response &rsp) {
    rsp.set_content("Hello World!", "text/plain");
    rsp.status = 200;
}

void Numbers(const httplib::Request &req, httplib::Response &rsp) {
    auto num = req.matches[1]; // 0 里面保存的是整体path, 往后下标中保存的是捕捉的数据
    rsp.set_content(num, "text/plain");
    rsp.status = 200;
}

void Multipart(const httplib::Request &req, httplib::Response &rsp) {
    auto ret = req.has_file("file");
    if (ret == false) {
        std::cout << "not file upload" << std::endl;
        rsp.status = 404;
        return;
    }
    const auto& file = req.get_file_value("file");
    rsp.body.clear();
    rsp.body += file.filename;
    rsp.body += "\n";
    rsp.body += file.content;
    rsp.set_header("Content-Type", "text/plain");
    rsp.status = 200;


}

int main() {
    httplib::Server server;   // 实例化以Server类的对象用于搭建服务器
    server.Get("/hi", Hello); // 注册一个针对/hi的Get请求的处理函数映射关系 
    server.Get("/numbers/(\\d+)", Numbers);
    server.Post("/multipart", Multipart);
    server.listen("0.0.0.0", 8888);
    return 0;
}